﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using Entidades.Sistema.Base;

namespace Modelo.Sistema.Base
{
    public class CatalogoCargo
    {
        private List<Cargo> Col_Cargo;

        public CatalogoCargo()
        {
            Col_Cargo = Mapping.Sistema.Base.MappingCargo.ConsultarCargos();
        }

        public ReadOnlyCollection<Cargo> ListarCargo()
        {
            return Col_Cargo.AsReadOnly();
        }

        public bool AgregarCargo(Cargo oCargo)
        {
            oCargo.IdCargo = GetMayor();
            Col_Cargo.Add(oCargo);
            return Mapping.Sistema.Base.MappingCargo.AgregarCargo(oCargo);
        }

        public bool EliminarCargo(Cargo oCargo)
        {
            Col_Cargo.Remove(oCargo);
            return Mapping.Sistema.Base.MappingCargo.EliminarCargo(oCargo);
        }
        public void ModificarCargo(Cargo oCargo)
        {
            Mapping.Sistema.Base.MappingCargo.ModificarCargo(oCargo);
            Col_Cargo.Remove(oCargo);
            Col_Cargo.Add(oCargo);
        }
        public Cargo BuscarCargo(int id)
        {
            return this.Col_Cargo.Find(unid => unid.IdCargo == id);
        }

       

        public bool ValidarExistencia(Cargo oCargo)
        {
            if (this.Col_Cargo.Count(unid => unid.IdCargo == oCargo.IdCargo) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


        public Int32 GetMayor()
        {
            if (Col_Cargo.Count == 0) return 0;

            Int32 maxIdCargo =
                (from pro in Col_Cargo
                 select pro.IdCargo)
                .Max();

            return maxIdCargo + 1;
        }
    }
}
